// ICharacter.hh
#ifndef ICHARACTER_HH
#define ICHARACTER_HH

#include <string>
#include <vector>

// Forward declaration of Item
struct Item;

class ICharacter {
public:
    // Virtual destructor for proper cleanup in derived classes
    virtual ~ICharacter() = default;

    // Required methods
    virtual bool isAlive() const = 0;
    virtual bool takeDamage(unsigned damage) = 0;
    virtual bool attack(ICharacter& target) = 0;

    // Getters
    virtual std::string getName() const = 0;
    virtual std::string getDescription() const = 0;
    virtual unsigned getHealth() const = 0;
    virtual unsigned getAttack() const = 0;
    virtual unsigned getDefense() const = 0;
    virtual std::string toString() const = 0;

    // Inventory management
    virtual void addToInventory(Item* item) = 0;
    virtual void displayInventory() const = 0;

    // Display
    virtual void display() const = 0;

};

#endif // ICHARACTER_HH
